This invention relates generally to the replication of a data subset of server data for use on a client device while the client device is disconnected from the server. In particular, the invention relates to methods for providing the data subset to the client device, and rendering the data subset on the client device using a generic data renderer.
Each day, enterprises as small as the corner shoe store and as large as multinational congomerates generate new data and access existing data that are vital to the ongoing viability of the enterprise. Technology advances in hardware and software have made it possible to amass and manage large amounts of data. All aspects of an organization""s activities are captured and stored in databases. Examples of such activities include sales, service, product development, advertising, personnel, benefits, education, and research. Storing data on computer systems makes it easier to gather the data, query and access the data, and to automate processes that use the data.
The enterprise data are maintained on computer systems called data servers, hereinafter, referred to as servers. Large servers are maintained by a professional staff and are housed in physically secure places. Smaller servers may be under the control of individuals and small groups and may be located in places like offices and laboratories.
Servers are located on computer networks and users access the data on the server from access points on the network. Users access the server over the network through the use of a client device (computer) which may have a permanent access point, like a desktop computer with a network interface, or a temporary access point, like a dial-up link to a network interface service. Using computer networks, it is just as easy to access a data server located down the hall as it is to access a data server located half way around the world.
There are various types of databases used by data servers. One type of database is referred to as a relational database. The relational database approach was introduced by E. F. Codd, in xe2x80x9cA Relational Model for Large Shared Data Banksxe2x80x9d, Communications of ACM, 13:6, pp. 377-387, 1970. A contemporary example of a relational database is IBM""s DB2.
The relational database model offers programmers a simplified view of data. The basic unit of organizing the data is a database table. A database table is two-dimensional array. Each row is a database record, or a logical collection of data. The columns represent fields in a record. There has evolved a rich set of query APIs called the Structured Query Language (SQL), which can be used to query and manipulate the rows (records) and columns (fields of a record) of a database table. It is even possible to form relations on multiple tables.
Relational DBMS (database management systems) record information necessary for operation in a group of system-supplied tables referred to as a xe2x80x9ccatalogxe2x80x9d. The catalog stores information about the data the DBMS is managing, which is referred to as xe2x80x9cmetaxe2x80x9d data. For example, a catalog records the names of tables stored within a DBMS, the names of the users who have been granted access to the tables, and other data. The database meta data is created within the database system and is used extensively by the database system administrators. Database programmers are given limited programming access to some of the data. For example, the data types of columns in a table can be obtained. Relational database management systems are described further by Bontempo et al., in Database Management Principles and Products, Prentice Hall, 1995.
A relational database system is a simplified form of a general multi-level data system. In a relational database system, fields are the elements of rows, rows are the elements of the tables, and tables are the elements of the database system. However, another type of database referred to as an object database can have arbitrary levels since objects can be embedded in objects. At each level, the permissible operations are defined as a part of the object. An object database is a more general example of a multi-level data system.
There are two modes in which client devices use server data. In the first mode, the client remains connected to the server for the entire time the client is accessing and using server data. There are a number of techniques for optimizing the performance in this mode. Examples include data caching at the client, prefetching data, and replicating data at the client. An important point about this mode is that if, at a certain step in the computation, the client needs data from the server in order to proceed in the computation, the client merely needs to issue a data fetch request to the server.
In the second mode, the client uses the data while disconnected from the server. First, the client must specify and fetch all of the data needed for use during the period of disconnection. This is called hoarding. Next, the client disconnects from the server. During the period of disconnection, the user may use the data on the client in a variety of ways. These include creating new data elements, modifying the data, and referencing the data. Lastly, the client must at some point connect to the server to perform synchronization. This action integrates the client replica of the data with the server data. The first access mode and the second mode are hereinafter referred to as connected data access mode as disconnected data access mode, respectively.
Disconnected data access is becoming an increasingly important mode of access. Many industries employ mobile workers who perform a significant part of their work away from the office. Examples include insurance agents, visiting nurses, and field service technicians. Corporations are re-engineering their work processes to put workers in the field and on the factory floor where they respond much faster to customer and corporate needs. As the population of the mobile work force rapidly grows, it is becoming increasingly important for enterprises to extend information and applications to their mobile workers.
When this trend first started, the client device of choice was a notebook computer running a WINDOWS operating system. One advantage of this client device was that it was basically the same software environment as that employed on the user""s desktop or office computer. Since the software environment was similar, it was easy for the user to go between using applications and data in connected mode in the office and using the applications and the data in disconnected mode on the notebook.
New client device types are constantly emerging. Handheld computers, personal digital assistants (PDAs), smart phones, and clam shell notebooks are some of the new client devices that are available today. When compared to standard notebook computers, these new devices have a smaller form factor, a lower cost of ownership, and are easier to use. All of these factors are leading to rapid acceptance of these devices as client devices by mobile workers.
These new client devices have significantly less resources than notebook computers or desktop personal computers (PCs). Currently, the total amount of memory,and storage on some of these devices is less than 10 Megabytes. On desktop PCs, total memory and storage can easily exceed gigabytes. The display size on some of these new client devices is less than 2 inches by 2 inches. The operating systems on the new client devices are all different from the operating system on desktop PCs. As a result of these factors, desktop PC application generally cannot be directly ported to handheld computers, cell phones, or PDAs.
Given the variety of device types and the different brands within a device type, users will use a diverse set of device types as client devices. Even when the information system staff of an enterprise has the authority to impose device usage, it will not be in their best interests to do so.
A description of the prior and current state of the art in connected and disconnected access to databases will now be given. In the early days of computing, users interacted with databases through the use of terminals connected to the computer. The computer was a mainframe or minicomputer that was maintained by a systems staff. The database system ran as an installed system application on the computer. Users accessed the data through an application program, like an accounting application, which made calls on the database system. The terminal interaction itself was part of the application. When on and active, the terminals were connected to the computer. This model of database access existed on both mainframes and minicomputers. Disconnected database access did not exist in this model. The client devices, which were the terminals, were not capable of operating independently of the host computer.
Personal computers (PCs) and local area networks (LANs) ushered in a new era of computing called client server computing. PCs had enough computational power and resources to execute the graphical user interface (GUI) of most applications. In fact, PCs were capable of performing a richer set of user interactions than that previously possible on terminals. A significant amount of benefit was obtained in moving the GUI functions to PCs. The mainframe or minicomputer was called the server since it now xe2x80x9cservedxe2x80x9d a set of LAN connected PCs. The servers were reliable and scaleable. There had always been an interface between the GUI portion of the application and the database access portion of the application. In client server computing, that interface now was a function call interface across a network. The result of database calls to a server were instantiated on the client device, the PC, as temporary program data. Disconnected database access was not possible in this computing model.
As PC technology evolved, mobile PCs were created. In general, there are three main requirements for a mobile PC. First, the PC has to be light enough in weight so a person can easily carry it from place to place. Second, it has to compact enough in size so as not to be too cumbersome to carry from place to:place. Third, the mobile PC has to be able to operate on battery power long enough to do something of interest for a user. With a mobile PC, it was now possible to operate a mobile PC in connected mode while it was connected to a computer network and then operate the same PC in disconnected mode while it is disconnected from the computer network.
Database applications could not operate in disconnected mode without additional client database software. The first instances of client server database systems assumed the client was always connected to the server. In general, the database system calls generated in the client node resulted in interaction with the server node. Two new elements had to be added to the client database software in order to support disconnected operation of database application on the client. First, a database server has to be installed on the client. This is called the local server and the other server is now called the primary server. Next, the portions of the main database needed by the local applications has to be replicated on the client system. A local replicator is needed on the client to interact with the replication service on the primary server. With the local server and the local replicator, the client system is now capable of disconnected operation.
However, the current state of disconnected operation has several disadvantages. For example, the software systems that enable disconnected operation do not support a broad set of client devices and a broad set of server data systems. Further, for each set of data to be used in disconnected operation, a client specific application is required to view the data and control user interaction with the data. Accordingly, it would be desirable and highly advantageous to have a method and system for disconnected operation of a client device with respect to a server database that overcomes the above deficiencies of the prior art.
The present invention is directed to methods for replicating a subset of a database to a set of heterogeneous client devices, where a user on a specific device can use device-specific renderer client software to view and interact with any data set. The user may then connect to the server and have the client replica, which is possibly modified, integrated with the server database.
According to a first aspect of the present invention, there is provided a method providing data subsets of server data to a plurality of heterogeneous client devices. The method includes the step of identifying portions of the server data to be included in each of the data subsets. Declarations of value constraints and usage constraints with respect to at least some of the data of at least some of the data subsets are provided. Each of the data subsets is generated so as to be associated with the respective declarations. Each of the data subsets is rendered on the plurality of heterogeneous client devices so as to enforce the respective declarations of the value constraints and the usage constraints.
According to a second aspect of the present invention, there is provided a system for providing portions of server data to a plurality of heterogeneous client devices. The system includes a declaration generating device adapted to generate declarations of value constraints and usage constraints with respect to at least some of the data of at least some of a plurality of data subsets corresponding to the portions of the server data. A subsetting device is adapted to generate the plurality of data subsets so as to be associated with the respective declarations. A browser is adapted to render each of the plurality of data subsets on the plurality of heterogeneous client devices so as to enforce the respective declarations of the value constraints and the usage constraints.
These and other aspects, features and advantages of the present invention will become apparent from the following detailed description of preferred embodiments, which is to be read in connection with the accompanying drawings.